IT organizations are challenged to meet today's constantly changing business needs and evolving workloads. Current approaches to solving these challenges include leveraging virtualization and automation technologies as part of a company's data center. An emerging mechanism for meeting the next level of flexibility, agility and rapid response challenges is cloud computing, which allows customers to run applications in a third party's hosted environment and quickly add or remove instances of these applications as required.
Different cloud applications have different requirements to the file system of the virtual machines (VMs) that they run on. For example, some cloud applications may require bigger file system space than what is provided by the virtual machine template. The free file system that comes with the VM templates may not be sufficient if the application has more extensive file operations. Conventionally, this requirement is addressed, although partially, by providing large virtual machines. However, large virtual machines have large CPUs, which may not be utilized efficiently. Alternatively, this requirement may be addressed by providing bigger file system to each of the virtual machines, however, it may not be an optimal and cost effective solution for the cloud service provider. Further, some other cloud applications may require stored data to be available even after the application is restarted or require that the stored data be available to all virtual machines that the application runs on.